In the field of computing, a virtual machine is a system that acts in software on a physical computing device to emulate the functions and/or architecture of another physical computing device. Certain virtual machines are arranged such that the execution of an operating system may take place on an emulated or “abstracted” hardware layer. The operating system “sees” the abstracted hardware layer as conventional computing hardware, i.e. a machine; however the abstracted hardware layer is in fact implemented by computer program code that is loaded into working memory of a host computing device and processed by one or more processors of the host computing device, i.e. is actually a “virtual” machine. For example, a virtual machine manager or “hypervisor” may be run as an application in an application space of the host computing device so as to control the implementation of the abstracted hardware layer, e.g. act as a software “host” for a virtual machine. A virtual machine, as implemented by the virtual machine manager, may use one or more virtual machine disks. These virtual machine disks emulate a conventional storage device, such as a magnetic or solid state drive, and are implemented using a file or other storage extent, e.g. a disk, partition or the like. The file or other storage extent is typically referred to as a virtual machine disk image. Inside the virtual machine, the virtual machine disk appears as a conventional mounted hard disk, e.g. as a “C:\” drive in a Microsoft Windows® system. Outside of the virtual machine, for example to a host operating system, the virtual machine disk image may appear as a large file or reserved set of storage. The contents of the virtual machine disk are typically inaccessible in the host operating system without special tools.
Virtualisation, in one form, has been suggested by some to help manage a proliferation of user-owned devices on closed network systems. In an ideal network environment, control of devices coupled to the network is desired. This may be for reasons of security, e.g. to stop malicious programs propagating on the network or to prevent unauthorised access, and/or network stability, e.g. to prevent hardware failure caused by incorrect processes or functions accessing network control devices. One way to do this is to carefully control the hardware and software configurations of all devices coupled to the network. However, as computing has decreased in cost and increased in mobility over time, more users are bringing their own computing devices to these controlled network environments. This has even given rise to its own acronym: BYOD—bring your own device. While some have tried to ban users from coupling their own devices to controlled networks, this often inconveniences users and is difficult to achieve in practice. Moreover, a similar problem occurs as more users have the option or the need to use a home computing device for remote working.
In the above cases, virtualisation offers users the possibility to connect to a virtual machine. The environment of the virtual machine may be controlled even if the environment of the user-owned device cannot be controlled. For example, a user may open a remote desktop virtualisation application that enables them, on a user-owned device, to access a virtual machine hosted on a remote server. One or more server-hosted virtual machines may be generated as required. This may allow usage loads to be managed without modifying underlying server hardware. However, these systems are not perfect. They require a stable and persistent network connection and are limited by the latency of network and processing systems.